home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 2003 March / DPPCPRO0303.ISO / Components / Microsoft ASP / _SETUP.1 / ASPWizard.jar / asp / wizard / WizardModelDbDetail.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-11-20  |  11.3 KB  |  308 lines

  1. package asp.wizard;
  2.  
  3. import asp.netobjects.nfx.util.ExceptionHandler;
  4. import asp.netobjects.nfx.util.ExternalError;
  5. import asp.netobjects.nfx.util.InternalError;
  6. import asp.netobjects.nfx.wizard.Wizard;
  7. import asp.netobjects.nfx.wizard.WizardPage;
  8. import asp.netobjects.nfx.wizard.WizardPageView;
  9. import asp.util.ResourceUtil;
  10. import asp.wizard.def.DefAbstract;
  11. import asp.wizard.def.DefCollection;
  12. import asp.wizard.def.DefDynaField;
  13. import asp.wizard.def.DefLabel;
  14. import asp.wizard.def.DefPage;
  15. import asp.wizard.def.DefQuery;
  16. import asp.wizard.def.DefTextArea;
  17. import asp.wizard.def.DefTextBox;
  18. import asp.wizard.util.UiUtil;
  19. import com.sun.java.swing.DefaultListModel;
  20. import com.sun.java.swing.ImageIcon;
  21. import com.sun.java.swing.table.DefaultTableModel;
  22. import java.sql.ResultSet;
  23. import java.text.MessageFormat;
  24. import java.util.Enumeration;
  25. import java.util.Vector;
  26.  
  27. public class WizardModelDbDetail extends WizardModelAbstract {
  28.    public static final String ERR_MISSING_VALUE = "msg.error.missing_value";
  29.    public static final String ERR_NO_DYNAFIELD = "msg.error.nodynafield";
  30.    public static final String OPT_CONTROL_TYPES = "option.control_types";
  31.    public static final String OPT_DATATYPE = "option.datatype";
  32.    public static final String VLU_FONT = "value.font";
  33.    public static final String ERR_CATEGORY = "error.category";
  34.    private boolean _showQuery = false;
  35.    // $FF: synthetic field
  36.    static Class class$asp$wizard$def$DefDynaField;
  37.    // $FF: synthetic field
  38.    static Class class$asp$wizard$WVPanelDbDetail;
  39.    // $FF: synthetic field
  40.    static Class class$asp$nfx$MSDBDynaField$MSDBDynaField;
  41.  
  42.    public void commit() throws InternalError, ExternalError {
  43.       WizardViewDbDetail view = (WizardViewDbDetail)((WizardPage)this).getView();
  44.       DefPage defPage = ((WizardModelAbstract)this).getDefPage();
  45.       this.removeAllDynafields(defPage);
  46.       Vector dataTypes = this.getDataTypes();
  47.       DefaultTableModel DFCollection = view.getDynafields();
  48.  
  49.       for(int i = 0; i < DFCollection.getRowCount(); ++i) {
  50.          this.addDynafield(DFCollection.getValueAt(i, 0).toString(), dataTypes.indexOf(DFCollection.getValueAt(i, 1).toString()), DFCollection.getValueAt(i, 2).toString());
  51.       }
  52.  
  53.    }
  54.  
  55.    public void loadValues() {
  56.       WizardViewDbDetail view = (WizardViewDbDetail)((WizardPage)this).getView();
  57.       DefaultTableModel DFCollection = view.getDynafields();
  58.       DefPage defPage = ((WizardModelAbstract)this).getDefPage();
  59.       Vector elemVect = ((DefCollection)defPage).getElements(class$asp$wizard$def$DefDynaField != null ? class$asp$wizard$def$DefDynaField : (class$asp$wizard$def$DefDynaField = class$("asp.wizard.def.DefDynaField")));
  60.       Vector dataTypes = this.getDataTypes();
  61.       Vector controlTypes = this.getControlTypes();
  62.       Vector controlTypesClasses = this.getControlTypeClasses();
  63.  
  64.       while(DFCollection.getRowCount() > 0) {
  65.          DFCollection.removeRow(0);
  66.       }
  67.  
  68.       Enumeration e = elemVect.elements();
  69.  
  70.       while(e.hasMoreElements()) {
  71.          DefDynaField _DefDynaField = (DefDynaField)e.nextElement();
  72.          int ctlIndex = controlTypesClasses.indexOf(_DefDynaField.getClass().getName());
  73.          Object[] data = new Object[]{_DefDynaField.getDataField(), dataTypes.elementAt(_DefDynaField.getDataType()), controlTypes.elementAt(ctlIndex)};
  74.          DFCollection.addRow(data);
  75.       }
  76.  
  77.    }
  78.  
  79.    public void loadView() {
  80.       WizardViewDbDetail view = (WizardViewDbDetail)((WizardPage)this).getView();
  81.       view.setControlType(this.getControlTypes());
  82.       view.setDataType(this.getDataTypes());
  83.       DefaultTableModel tm = (DefaultTableModel)view.getFieldSpecTable().getModel();
  84.       DefaultListModel lm = (DefaultListModel)view.getFieldList().getModel();
  85.       DefQuery defQuery = this.getDefQuery();
  86.       if (defQuery != null) {
  87.          lm.setSize(0);
  88.  
  89.          try {
  90.             WizDbManager.getFields(defQuery, false, lm);
  91.          } catch (EWizDbManager e) {
  92.             AspWizardExceptionHandler.showMessage(0, ((Throwable)e).getMessage());
  93.          }
  94.       }
  95.  
  96.       this.loadValues();
  97.       UiUtil.validateTableAgainstList(tm, lm, 0);
  98.    }
  99.  
  100.    public void validate() throws InternalError, ExternalError {
  101.       super.validate();
  102.       DefQuery defQuery = this.getDefQuery();
  103.       WizardViewDbDetail view = (WizardViewDbDetail)((WizardPage)this).getView();
  104.       DefaultTableModel DFCollection = view.getDynafields();
  105.       if (DFCollection.getRowCount() < 1) {
  106.          String msg = ResourceUtil.getResourceString("asp.wizard.res", class$asp$wizard$WVPanelDbDetail != null ? class$asp$wizard$WVPanelDbDetail : (class$asp$wizard$WVPanelDbDetail = class$("asp.wizard.WVPanelDbDetail")), "msg.error.nodynafield");
  107.          throw new EWizardModelExt(msg);
  108.       } else {
  109.          for(int i = 0; i < DFCollection.getRowCount(); ++i) {
  110.             if (DFCollection.getValueAt(i, 0).toString().length() == 0 || DFCollection.getValueAt(i, 1).toString().length() == 0 || DFCollection.getValueAt(i, 2).toString().length() == 0) {
  111.                String err = ResourceUtil.getResourceString("asp.wizard.res", class$asp$wizard$WVPanelDbDetail != null ? class$asp$wizard$WVPanelDbDetail : (class$asp$wizard$WVPanelDbDetail = class$("asp.wizard.WVPanelDbDetail")), "msg.error.missing_value");
  112.                Object[] args = new Object[]{new Integer(i + 1)};
  113.                String msg = MessageFormat.format(err, args);
  114.                throw new ExternalError(msg);
  115.             }
  116.          }
  117.  
  118.       }
  119.    }
  120.  
  121.    public void removeAllDynafields(DefPage pgDef) {
  122.       Vector elemVect = ((DefCollection)pgDef).getElements((new DefDynaField()).getClass());
  123.       Enumeration e = elemVect.elements();
  124.  
  125.       while(e.hasMoreElements()) {
  126.          ((DefCollection)pgDef).removeElement((DefAbstract)e.nextElement());
  127.       }
  128.  
  129.    }
  130.  
  131.    public void addDynafield(String Field, int DataType, String CtlType) {
  132.       Vector controlType = this.getControlTypes();
  133.       if (controlType.indexOf(CtlType) == 0) {
  134.          this.addTextbox(Field, DataType);
  135.       }
  136.  
  137.       if (controlType.indexOf(CtlType) == 1) {
  138.          this.addTextarea(Field, DataType);
  139.       }
  140.  
  141.       if (controlType.indexOf(CtlType) == 2) {
  142.          this.addLabel(Field, DataType);
  143.       }
  144.  
  145.    }
  146.  
  147.    public void addTextbox(String Field, int DataType) {
  148.       DefTextBox _DefDynaField = new DefTextBox();
  149.       ((DefAbstract)_DefDynaField).setDefQuery(this.getDefQuery());
  150.       ((DefDynaField)_DefDynaField).setDefaultValue("");
  151.       ((DefDynaField)_DefDynaField).setDataField(Field);
  152.       ((DefDynaField)_DefDynaField).setDataType(DataType);
  153.       ((DefDynaField)_DefDynaField).setUseDefaultValue(1);
  154.       ((DefDynaField)_DefDynaField).setUseQuery(0);
  155.       ((DefDynaField)_DefDynaField).setLabelText(Field);
  156.       _DefDynaField.setVisibleLength(20);
  157.       _DefDynaField.setMaxLength(20);
  158.       String name = ((WizardModelAbstract)this).getDefPage().getUniqueNameFor(_DefDynaField);
  159.       ((DefAbstract)_DefDynaField).setName(name);
  160.       ((WizardModelAbstract)this).getDefPage().addElement(_DefDynaField);
  161.    }
  162.  
  163.    public void addTextarea(String Field, int DataType) {
  164.       DefTextArea _DefDynaField = new DefTextArea();
  165.       ((DefAbstract)_DefDynaField).setDefQuery(this.getDefQuery());
  166.       ((DefDynaField)_DefDynaField).setDefaultValue("");
  167.       ((DefDynaField)_DefDynaField).setDataField(Field);
  168.       ((DefDynaField)_DefDynaField).setDataType(DataType);
  169.       ((DefDynaField)_DefDynaField).setUseDefaultValue(1);
  170.       ((DefDynaField)_DefDynaField).setUseQuery(0);
  171.       ((DefDynaField)_DefDynaField).setLabelText(Field);
  172.       _DefDynaField.setVisibleLength(20);
  173.       _DefDynaField.setMaxLength(20);
  174.       _DefDynaField.setVisibleHeight(3);
  175.       String name = ((WizardModelAbstract)this).getDefPage().getUniqueNameFor(_DefDynaField);
  176.       ((DefAbstract)_DefDynaField).setName(name);
  177.       ((WizardModelAbstract)this).getDefPage().addElement(_DefDynaField);
  178.    }
  179.  
  180.    public void addLabel(String Field, int DataType) {
  181.       DefLabel _DefDynaField = new DefLabel();
  182.       ((DefAbstract)_DefDynaField).setDefQuery(this.getDefQuery());
  183.       ((DefDynaField)_DefDynaField).setDefaultValue("");
  184.       ((DefDynaField)_DefDynaField).setDataField(Field);
  185.       ((DefDynaField)_DefDynaField).setDataType(DataType);
  186.       ((DefDynaField)_DefDynaField).setUseDefaultValue(1);
  187.       ((DefDynaField)_DefDynaField).setUseQuery(0);
  188.       ((DefDynaField)_DefDynaField).setLabelText(Field);
  189.       _DefDynaField.setFont(ResourceUtil.getResourceString("asp.nfx.res", class$asp$nfx$MSDBDynaField$MSDBDynaField != null ? class$asp$nfx$MSDBDynaField$MSDBDynaField : (class$asp$nfx$MSDBDynaField$MSDBDynaField = class$("asp.nfx.MSDBDynaField.MSDBDynaField")), "value.font"));
  190.       _DefDynaField.setBold(1);
  191.       _DefDynaField.setItalic(1);
  192.       _DefDynaField.setUnderline(1);
  193.       _DefDynaField.setColor(0);
  194.       _DefDynaField.setSize(2);
  195.       String name = ((WizardModelAbstract)this).getDefPage().getUniqueNameFor(_DefDynaField);
  196.       ((DefAbstract)_DefDynaField).setName(name);
  197.       ((WizardModelAbstract)this).getDefPage().addElement(_DefDynaField);
  198.    }
  199.  
  200.    private DefQuery getDefQuery() {
  201.       DefQuery result = null;
  202.       WizardManager wm = ((WizardModelAbstract)this).getWizardManager();
  203.       if (wm != null) {
  204.          result = wm.getDefQuery(this);
  205.       } else {
  206.          System.err.println("WizardManager not found");
  207.       }
  208.  
  209.       return result;
  210.    }
  211.  
  212.    protected String getQueryDataType(String fieldName) {
  213.       String result = "";
  214.       ResultSet rs = null;
  215.       DefQuery defQuery = this.getDefQuery();
  216.       if (defQuery != null) {
  217.          int DBType = -1;
  218.  
  219.          try {
  220.             DBType = WizDbManager.getDBTypes(defQuery, fieldName);
  221.          } catch (EWizDbManager e) {
  222.             AspWizardExceptionHandler.showMessage(0, ((Throwable)e).getMessage());
  223.          }
  224.  
  225.          String reserveWord = WizDbManager.getDataTypeName(DBType);
  226.          Vector internalDataTypes = WizDbManager.getInternalDataTypes();
  227.          Vector dataTypes = this.getDataTypes();
  228.          result = dataTypes.elementAt(internalDataTypes.indexOf(reserveWord)).toString();
  229.       }
  230.  
  231.       return result;
  232.    }
  233.  
  234.    public WizardModelDbDetail() {
  235.    }
  236.  
  237.    public WizardModelDbDetail(Wizard wizard, String bullet, String info, ImageIcon icon, ExceptionHandler handler) {
  238.       super(wizard, bullet, info, icon, handler);
  239.    }
  240.  
  241.    protected WizardPageView getViewSingleInstance() {
  242.       return WizardViewDbDetail.getInstance();
  243.    }
  244.  
  245.    public WizardPage getNext() throws InternalError, ExternalError {
  246.       WizardPage next = super.getNext();
  247.       WizardManager wm = ((WizardModelAbstract)this).getWizardManager();
  248.       int nextSeqTemplateId = 2;
  249.       if (next == null) {
  250.          wm.addSequence(this, this, (DefPage)null, nextSeqTemplateId, (DefPage)null);
  251.          next = super.getNext();
  252.       }
  253.  
  254.       return next;
  255.    }
  256.  
  257.    public Vector getDataTypes() {
  258.       String test = ResourceUtil.getResourceString("asp.nfx.res", class$asp$nfx$MSDBDynaField$MSDBDynaField != null ? class$asp$nfx$MSDBDynaField$MSDBDynaField : (class$asp$nfx$MSDBDynaField$MSDBDynaField = class$("asp.nfx.MSDBDynaField.MSDBDynaField")), "option.datatype");
  259.       Vector result = UiUtil.strToVector(test);
  260.       return result;
  261.    }
  262.  
  263.    public Vector getControlTypes() {
  264.       String test = ResourceUtil.getResourceString("asp.wizard.res", class$asp$wizard$WVPanelDbDetail != null ? class$asp$wizard$WVPanelDbDetail : (class$asp$wizard$WVPanelDbDetail = class$("asp.wizard.WVPanelDbDetail")), "option.control_types");
  265.       Vector result = UiUtil.strToVector(test);
  266.       return result;
  267.    }
  268.  
  269.    public Vector getControlTypeClasses() {
  270.       String test = "asp.wizard.def.DefTextBox|asp.wizard.def.DefTextArea|asp.wizard.def.DefLabel";
  271.       Vector result = UiUtil.strToVector(test);
  272.       return result;
  273.    }
  274.  
  275.    public void setShowQuery(boolean value) {
  276.       this._showQuery = value;
  277.    }
  278.  
  279.    public boolean getShowQuery() {
  280.       return this._showQuery;
  281.    }
  282.  
  283.    public void gotoWizardModelDbQuery() {
  284.       WizardManager wm = ((WizardModelAbstract)this).getWizardManager();
  285.       wm.setModelSkippingEnabled(false);
  286.  
  287.       try {
  288.          ((Wizard)wm).previousPage();
  289.       } catch (Throwable e) {
  290.          if (((Wizard)wm).getExceptionHandler() != null) {
  291.             super.dmWizard.getExceptionHandler().handleException(e);
  292.          }
  293.       } finally {
  294.          wm.setModelSkippingEnabled(true);
  295.       }
  296.  
  297.    }
  298.  
  299.    // $FF: synthetic method
  300.    static Class class$(String class$) {
  301.       try {
  302.          return Class.forName(class$);
  303.       } catch (ClassNotFoundException forName) {
  304.          throw new NoClassDefFoundError(((Throwable)forName).getMessage());
  305.       }
  306.    }
  307. }
  308.